package SortAlogrithm;

/*
 * @Author: qianmingtian
 * @Date: 2020-07-09 17:35:45
 * @LastEditors: qianmingtian
 * @LastEditTime: 2020-07-09 17:58:09
 * @FilePath: \qianmingtian.github.io\code\java\SortAlogrithm\SelectSort.java
 */
/**
 * 交换次数更小： 每次循环，剩余参与比较的数据中的最小的元素与第一个元素交换位置 时间复杂度 与冒泡排序是相同的 123, 34, 5, 6, 21,
 * 6543, 231, 6453, 213
 * 
 * 第一次循环，5 与123交换位置
 */
public class SelectSort {
    public static void main(String[] args) {
        int[] arr = { 123, 34, 5, 6, 21, 6543, 231, 6453, 213 };
        int arrLength = arr.length;
        for (int i = 0; i < arrLength - 1; i++) {
            // 最小值的下标
            int min = i;
            // System.out.println(i);
            for (int j = i + 1; j < arrLength; j++) {
                // System.out.println("--->" + j);
                if (arr[j] < arr[min]) {
                    min = j;
                }
            }
            // 如果有更小的，交换位置
            if (min != i) {
                arr[min] = arr[min] + arr[i];
                arr[i] = arr[min] - arr[i];
                arr[min] = arr[min] - arr[i];
            }

        }
        for (int i : arr) {
            System.out.println(i);
        }

    }
}